/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.baladaboa.ws.core;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author Leone
 */
@Entity
@Table(name = "endereco", catalog = "dbbaladaboa", schema = "")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Endereco.findAll", query = "SELECT e FROM Endereco e"),
    @NamedQuery(name = "Endereco.findByIdendereco", query = "SELECT e FROM Endereco e WHERE e.idendereco = :idendereco"),
    @NamedQuery(name = "Endereco.findByDescBairro", query = "SELECT e FROM Endereco e WHERE e.descBairro = :descBairro"),
    @NamedQuery(name = "Endereco.findByDescEndereco", query = "SELECT e FROM Endereco e WHERE e.descEndereco = :descEndereco"),
    @NamedQuery(name = "Endereco.findByDescNumero", query = "SELECT e FROM Endereco e WHERE e.descNumero = :descNumero"),
    @NamedQuery(name = "Endereco.findByDescComplemento", query = "SELECT e FROM Endereco e WHERE e.descComplemento = :descComplemento"),
    @NamedQuery(name = "Endereco.findByCep", query = "SELECT e FROM Endereco e WHERE e.cep = :cep")})
public class Endereco implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idendereco", nullable = false)
    private Integer idendereco;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 55)
    @Column(name = "desc_bairro", nullable = false, length = 55)
    private String descBairro;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 55)
    @Column(name = "desc_endereco", nullable = false, length = 55)
    private String descEndereco;
    @Basic(optional = false)
    @NotNull
    @Column(name = "desc_numero", nullable = false)
    private int descNumero;
    @Size(max = 55)
    @Column(name = "desc_complemento", length = 55)
    private String descComplemento;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 9)
    @Column(name = "cep", nullable = false, length = 9)
    private String cep;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "enderecoIdendereco")
    private List<PontoOnibus> pontoOnibusList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "enderecoIdendereco")
    private List<PontoTaxi> pontoTaxiList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "enderecoIdendereco")
    private List<Cliente> clienteList;
    @JoinColumn(name = "cidade_idcidade", referencedColumnName = "idcidade", nullable = false)
    @ManyToOne(optional = false)
    private Cidade cidadeIdcidade;

    public Endereco() {
    }

    public Endereco(Integer idendereco) {
        this.idendereco = idendereco;
    }

    public Endereco(Integer idendereco, String descBairro, String descEndereco, int descNumero, String cep) {
        this.idendereco = idendereco;
        this.descBairro = descBairro;
        this.descEndereco = descEndereco;
        this.descNumero = descNumero;
        this.cep = cep;
    }

    public Integer getIdendereco() {
        return idendereco;
    }

    public void setIdendereco(Integer idendereco) {
        this.idendereco = idendereco;
    }

    public String getDescBairro() {
        return descBairro;
    }

    public void setDescBairro(String descBairro) {
        this.descBairro = descBairro;
    }

    public String getDescEndereco() {
        return descEndereco;
    }

    public void setDescEndereco(String descEndereco) {
        this.descEndereco = descEndereco;
    }

    public int getDescNumero() {
        return descNumero;
    }

    public void setDescNumero(int descNumero) {
        this.descNumero = descNumero;
    }

    public String getDescComplemento() {
        return descComplemento;
    }

    public void setDescComplemento(String descComplemento) {
        this.descComplemento = descComplemento;
    }

    public String getCep() {
        return cep;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }

    @XmlTransient
    public List<PontoOnibus> getPontoOnibusList() {
        return pontoOnibusList;
    }

    public void setPontoOnibusList(List<PontoOnibus> pontoOnibusList) {
        this.pontoOnibusList = pontoOnibusList;
    }

    @XmlTransient
    public List<PontoTaxi> getPontoTaxiList() {
        return pontoTaxiList;
    }

    public void setPontoTaxiList(List<PontoTaxi> pontoTaxiList) {
        this.pontoTaxiList = pontoTaxiList;
    }

    @XmlTransient
    public List<Cliente> getClienteList() {
        return clienteList;
    }

    public void setClienteList(List<Cliente> clienteList) {
        this.clienteList = clienteList;
    }

    public Cidade getCidadeIdcidade() {
        return cidadeIdcidade;
    }

    public void setCidadeIdcidade(Cidade cidadeIdcidade) {
        this.cidadeIdcidade = cidadeIdcidade;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idendereco != null ? idendereco.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Endereco)) {
            return false;
        }
        Endereco other = (Endereco) object;
        if ((this.idendereco == null && other.idendereco != null) || (this.idendereco != null && !this.idendereco.equals(other.idendereco))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "br.com.baladaboa.ws.core.Endereco[ idendereco=" + idendereco + " ]";
    }
    
}
